/*
 * Buffer_texto.h
 *
 *  Created on: 08/06/2010
 *      Author: juan
 */

#ifndef BUFFER_ENTRADA_H_
#define BUFFER_ENTRADA_H_

#include <stdio.h>
#include "../ConstantesCompresor.h"

class Buffer_entrada {

private:

	char* buffer; //buffer de texto leido del archivo

	int tamanio_buffer; //tamanio del bloque q se leera del archivo

	int tamanio_ocupacion; //tamanio del buffer que fue ocupado por lectura

	int cant_leidos; //cantidad de caracteres que se han leido desde el buffer

	FILE * archivo;  //referencia al archivo utilizado

	void cargar_buffer();

public:

	/**
	 * Constructor
	 * @param:
	 * file: instancia de archivo de texto para guardar en el buffer.
	 * este debe haber sido abierto correctamente y no se cerrara al
	 * morir la instancia del Buffer_texto.
	 * tam_buffer: tamanio del buffer en memoria para ir leyendo el
	 * archivo
	 */
	Buffer_entrada(FILE * archivo_entrada,int tam_buffer);

	/**
	 * Retorna un caracter del archivo almacenado en el buffer y apunta al
	 * siguiente carcater almacenado para la proxima vez que se invoque a
	 * la funcion
	 * @return
	 * - caracter actual del buffer
	 * - '\0' si ya se leyeron todos los caracteres del archivo
	 */
	TLetraExt get_caracter();

	/**
	 * Destructor: libera los recursos
	 */
	virtual ~Buffer_entrada();
};

#endif /* BUFFER_ENTRADA_H_ */
